package znet

import "my-zinx/utils"

type Message struct {
	ID      uint64 // MessageID
	Data    []byte
	DataLen uint64
}

func (m *Message) GetDataLen() uint64 {
	return m.DataLen
}

func (m *Message) GetMsgID() uint64 {
	return m.ID
}

func (m *Message) GetData() []byte {
	return m.Data
}

func (m *Message) SetMsgID(id uint64) {
	m.ID = id
}

func (m *Message) SetData(data []byte) {
	m.Data = data
}

func (m *Message) SetDataLen(len uint64) {
	m.DataLen = len
}

func (m *Message) IsValidMessage() bool {
	if utils.Env.MaxPacketSize > 0 && m.DataLen > utils.Env.MaxPacketSize {
		return false
	}

	return true
}

func NewMessage(id uint64, data []byte) *Message {
	return &Message{
		ID:      id,
		Data:    data,
		DataLen: uint64(len(data)),
	}
}

func NewEmptyMessage() *Message {
	return &Message{}
}
